#include "bloques.h"
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

static int fichero = 0;


int bmount(const char *camino){

	fichero = open(camino, O_CREAT|O_RDWR, 0666);

	if (fichero == -1){
		printf("Error al montar el Sistema");
		//return -1;
	} else {
		printf("Sistema de Ficheros montado (bmount) con exito \n");
		//return fichero;
	}
	return fichero;
}

int bumount(){

	int cerrar = close(fichero);

	if (cerrar == -1){
		printf("Error al desmontar el Sistema de Fichero \n");
	} else {
		printf("Sistema de Ficheros desmontado (bmount) con exito \n");
	}
	return cerrar;
}

int bwrite(unsigned int bloque, const void *buf){
	
	if (lseek(fichero, (bloque*tam_bloq), SEEK_SET) == -1){
		printf("Error lseek bwrite \n");
	}
	
	int escribir = write(fichero, buf, tam_bloq);
	
	if (escribir == -1){
		printf("Error al escribir bloque %d \n", bloque);
	} else {
		printf("Bloque escrito con exito \n");
	}
	return escribir;
}

int bread(unsigned int bloque, void *buf){
	
	if(lseek(fichero, (bloque*tam_bloq), SEEK_SET) == -1){
		perror("Error lseek bread \n");
	}
	
	int leer = read(fichero,buf,tam_bloq);
	
	if (leer == -1){
		perror("Error al leer bloque");
	} else {
		printf("Bloque leido con exito \n");
	}
	return leer;
}
 
